.TH LCTL-NODEMAP_MODIFY 8 2025-02-28 Lustre "Lustre Configuration Utilities"
.SH NAME
lctl-nodemap_modify \- modify a nodemap property
.SH SYNOPSIS
.SY "lctl nodemap_modify"
or
.SY "lctl nodemap modify"
.BI --name " NODEMAP_NAME"
.B --property
.IR PROPERTY_NAME {\fB= VALUE |\fB--value " VALUE" }
.YS
.SH DESCRIPTION
.B nodemap_modify
modifies a property of the given nodemap.
.SH OPTIONS
.TP
.BI --name " NODEMAP_NAME"
The name of the nodemap to modify
.TP
.B --property
.IR PROPERTY_NAME {\fB= VALUE |\fB--value " VALUE" }
.TP
One of the following properties:
.RS 8
.TP 4
.B admin
Defaults to 0. If set to 1, then root will NOT be squashed. By default,
the root user is mapped to the value of squash_uid.
.TP
.B trusted
Defaults to 0. If set to 1, then user mapping will be disabled for all
non-root users. This means that the identities provided by the client will be
trusted to match the identities of the file system. By default, the client user
identities are mapped to the file system identities based on the nodemap rules.
.TP
.B squash_uid
Defaults to
.B NODEMAP_NOBODY_UID
if not specified, which is 65534 to match the standard Linux
.B nobody
user ID.
The user ID that unknown users (if not
.BR trusted " ) and "
.BR root " (if not " admin )
should be mapped to.
When offsets are defined on the nodemap, the squash value should be in the
offset range [ 0, offset_limit-1 ], otherwise squashed UIDs would escape
offsetting.
.TP
.B squash_gid
Defaults to
.B NODEMAP_NOBODY_UID
if not specified, which is 65534 to match the standard Linux
.B nobody
user ID.
The group ID that unknown groups (if not trusted)
and root (if not admin) should be mapped to.
When offsets are defined on the nodemap, the squash value should be in the
offset range [ 0, offset_limit-1 ], otherwise squashed GIDs would escape
offsetting.
.TP
.B squash_projid
Defaults to
.B NODEMAP_NOBODY_UID
if not specified, which is 65534 to match the standard Linux
.B nobody
user ID.
The project ID that unknown projects (if not trusted) should be mapped to.
When offsets are defined on the nodemap, the squash value should be in the
offset range [ 0, offset_limit-1 ], otherwise squashed PROJIDs would escape
offsetting.
.TP
.B deny_unknown
Defaults to 0. If set to 1 then unknown (squashed) users will be denied
access to the filesystem completely instead of just being squashed. Users are
considered unknown by nodemap if the admin flag is off and the user is root, or
trusted are set to off and the user is not mapped.
.IP
Note: directory entries cached by a Lustre client may be visible to unknown
users located on the same client, though the contents of the files will not be.
.TP
.B audit_mode
Defaults to 1, which lets clients record file system access events to the
Changelogs, if Changelogs are otherwise activated. If set to 0, events from
these clients are not logged into the Changelogs, no matter if Changelogs are
activated or not.
The reason not to record file system events from given clients is to prevent
some nodes (e.g. backup, HSM agent nodes) from flooding the Changelogs.
.TP
.B map_mode
Defaults to all, which means the nodemap maps UIDs, GIDs, and PROJIDs.
Other possible values (multiple can be specified, comma separated) are uid to
map UIDs, gid to map GIDs, both to map UIDs and GIDs, and projid to map PROJIDs.
.TP
.B forbid_encryption
Defaults to 0, which means encryption is allowed.
Set to 1 to prevent clients from using encryption.
.TP
.B child_raise_privileges
Defaults to none, allowing child nodemaps to only lower privileges established
by parent nodemap. Other possible values (multiple can be specified, comma
separated) are the nodemap properties names that support privilege raise:
.br
- admin
.br
- trusted
.br
- deny_unknown
.br
- readonly_mount
.br
- forbid_encryption
.br
- child_raise_privs
.br
- caps
.br
It is also possible to specify any roles accepted by the
.B rbac
property (see below).
.br
Any privilege not explicitly specified cannot be raised. To allow all privileges
to be raised, use 'all' value.
.TP
.B readonly_mount
Defaults to 0, which lets clients mount in read-write mode. If set to 1,
clients are forced to a read-only mount if not specified explicitly.
.TP
.B deny_mount
Defaults to 0, accepting client mounts from nodes assigned to the nodemap. If
set to 1, nodes assigned to the nodemap can no longer mount new Lustre clients.
Existing clients remain operational until a remount is attempted.
.TP
.B rbac
Defaults to all, which means all roles are allowed. Other possible values
(multiple can be specified, comma separated) are:
.EX
- byfid_ops, to allow operations by FID (e.g. 'lfs rmfid').
- chlg_ops, to allow access to Lustre Changelogs.
- dne_ops, to allow operations related to DNE (e.g. 'lfs mkdir').
- file_perms, to allow modifications of file permissions and owners.
.EE
- fscrypt_admin, to allow fscrypt related admin tasks
(create or modify protectors/policies). Note that even without this role,
it is still possible to lock or unlock encrypted directories,
as these operations only need read access to fscrypt metadata.
.br
- hsm_ops, to control whether clients can carry out HSM actions.
.br
- ignore_root_prjquota, so that project quota is not enforced for the root user.
.br
- local_admin, to allow mapped root to perform admin operations on files, unless
it is squashed.
.br
- quota_ops, to allow quota modifications.
.br
- server_upcall, to define which identity upcall to use. If set, identity upcall
is defined by server side tunable. If not set, identity upcall is forced to
INTERNAL, so that servers trust supplementary groups as provided by clients.
.br
Apart from all, any role not explicitly specified is forbidden.
And to forbid all roles, use 'none' value.
.RE
.TP
.BI --value " VALUE"
The value to set for the property. Should be 0 or 1 for admin and trusted.
The use of both
.BI --property " PROPERTY_NAME" = VALUE
and
.BI --value " VALUE"
is invalid.
.SH EXAMPLES
Commands illustrating how to modify nodemap properties:
.EX
.B # lctl nodemap_modify --name remotesite --property trusted --value 1
.B # lctl nodemap_modify --name remotesite --property admin --value 1
.B # lctl nodemap_modify --name remotesite --property map_mode --value uid
.B # lctl nodemap_modify --name remotesite --property rbac=all
.B # lctl nodemap_modify --name othersite --property squash_uid --value 101
.EE
.SH AVAILABILITY
.B lctl nodemap_modify
is part of the
.BR lustre (7)
filesystem package since release 2.6.0
.\" Added in commit v2_5_56_0-13-g4642f30970
.SH SEE ALSO
.BR lustre (7),
.BR lctl-nodemap-activate (8),
.BR lctl-nodemap-add (8),
.BR lctl-nodemap-add-idmap (8),
.BR lctl-nodemap-add-offset (8),
.BR lctl-nodemap-add-range (8),
.BR lctl-nodemap-del (8),
.BR lctl-nodemap-del-idmap (8),
.BR lctl-nodemap-del-offset (8),
.BR lctl-nodemap-del-range (8)
